home *** CD-ROM | disk | FTP | other *** search
/ Aminet 35 / Aminet 35 (2000)(Schatztruhe)[!][Feb 2000].iso / Aminet / comm / irc / UnrealIRCD-bin.lha / Unreal / doc / conf.doc next >
Encoding:
Text File  |  1999-11-28  |  40.1 KB  |  851 lines

  1.                     -- ircd.conf Programming --
  2.  (written for DALnet release ircd) v1.01 by Roddy Vagg -- <roddy@dal.net>
  3.  
  4.                         --------------------
  5.  
  6.     1) ............................. Introduction
  7.     2) ............................. ircd.conf Basics
  8.     3) ............................. ircd.conf Lines
  9.      3.1) .......................... M Lines
  10.      3.2) .......................... A Lines
  11.      3.3) .......................... Y Lines
  12.      3.4) .......................... I Lines
  13.      3.5) .......................... O Lines
  14.      3.6) .......................... U Lines
  15.      3.7) .......................... C and N Lines
  16.      3.8) .......................... K Lines
  17.      3.9) .......................... Q Lines (server form)
  18.      3.10) ......................... Q Lines (nickname form)
  19.      3.11) ......................... L Lines
  20.      3.12) ......................... H Lines
  21.      3.13) ......................... P Lines
  22.      3.14) ......................... Summary
  23.      3.15) ......................... DALnet ircd.conf lines
  24.  
  25.                         --------------------
  26.  
  27. 1) Introduction:
  28.  
  29.   If you are running, or planning on running an IRC server for a network,
  30.  you will need to setup an ircd.conf, your ircd.conf must meet the
  31.  requirements of a linked network server which means it must contain all
  32.  the standard network lines, these will be listed at the bottom of this
  33.  document. (If you make your own network you may customize them yourself)
  34.  
  35.                         --------------------
  36.  
  37. 2) ircd.conf Basics:
  38.  
  39.   When you compile your server, you must specify the correct paths to
  40.  where you plan on keeping your ircd.conf, for simplicity it is recomended
  41.  that you keep it in the same diretory as your ircd binary and other ircd
  42.  files.
  43.    note: You need only supply full pathnames for DPATH and SPATH, the
  44.  other defines will only point to files under these directories so you
  45.  need not put full path names.
  46.   For security reasons, your ircd.conf should have permissions set to 600,
  47.  if other users on your system gain access to view the file they may be
  48.  able to breach the security of your server and compromise the whole
  49.  network.
  50.   When you have made your ircd.conf you may check it with the program
  51.  `chkconf', this program is supplied with the source code release and will
  52.  be installed into your ircd directory when you run `make install',
  53.  `chkconf' will check your ircd.conf for errors so is a usefull tool for
  54.  beginners to ircd.conf.
  55.   Your ircd.conf will be made up of a series of lines, each line is used
  56.  for a different purpose in the running of your server, some lines are
  57.  mandatory for ircd, so you must enter these lines or your server will not
  58.  start, these lines are listed below.
  59.   You may enter comments in your ircd.conf with the use of a hash mark (#)
  60.  at the beginning of a line, it is recommended that you make full use of
  61.  this to add comments to everything you put in your ircd.conf so you dont
  62.  have any problems later.
  63.    eg: Put a contact email address and the name/nick of the server admin
  64.        above each C/N line pair.
  65.   When ircd reads the ircd.conf file, it does it upside down, so lines with
  66.  higher prefrence should go lower in the file, this will be explained later.
  67.  
  68.                         --------------------
  69.  
  70. 3) ircd.conf Lines:
  71.  
  72.   Each type of line in this section will be given a rating of how needed
  73.  it is in the running of the server, the ratings are:
  74.  
  75.      MANDATORY: you absolutely MUST have this line
  76.      NETWORKED: you must have this line if plan on connecting your server
  77.                 to other servers. (note: you can run ircd stand alone)
  78.      SUGGESTED: it is highly suggested that you use this line
  79.       OPTIONAL: it's completely up to you whether to define this or not
  80.    DISCOURAGED: you really really should not use this line if at all
  81.                 possible.
  82.  
  83.  Note that "*" in a field indicates an "unused" field.
  84.  
  85.                         --------------------
  86.  
  87. 3.1) M Lines: [MANDATORY]
  88.  
  89.  This line sets your server's name, description, and port number.
  90.  If you are to be a part of DALnet you will be assigned 2 different
  91.  DNS entries for your ircd machine, the 1st is for general public use
  92.  and involves: <servername>.DAL.net
  93.  The second is for use between servers for identification, these take
  94.  the form of: <servername>.[<state>].<country>.DAL.net
  95.  If your server is located in the US or Australia, you will be given
  96.  a `state' field in your server's real name, otherwise your `state', or
  97.  `area' will not be included.
  98.  Most IRC networks default to port 6667 for their client connection's,
  99.  but DALnet uses port 7000 as its standard, you should compile ircd with
  100.  port 7000, not 6667, but you may open up port 6667 (it is recomended
  101.  that you do) with a P line (see later). Your M line's port number
  102.  should be the same as the number you defined in your config.h at compile
  103.  time.
  104.  
  105.  Syntax:
  106. M:hostname:IP:Description Of Your Server:7000
  107.  The 1st field should be the `real' name of your server, not the short
  108.  name.
  109.  The 2nd field is the IP the server should bind to - "*" if all interfaces
  110.      on the server
  111.  The 3rd field is your server's description, it is up to you what you
  112.  put in this field, but a short description of its geographic location
  113.  is recomended.
  114.  The 4th field is the port number you compiled ircd with. This should be
  115.  7000 for DALnet.
  116.  
  117.  Example:
  118. M:disney.irc.net::Walt's IRC Server:7000
  119.  
  120.                         --------------------
  121.  
  122. 3.2) A Lines: [MANDATORY]
  123.  
  124.  This line sets your server's administrative information.
  125.  Whenever a user types /admin on your server (or /admin <servername>)
  126.  they will recieve the information you put here.
  127.  This line has no set information, so you may put arbitrary text if you
  128.  like, but it is recomended that you at least put your nick and email
  129.  address so users may contact you if need be.
  130.  
  131.  Syntax:
  132. A:A little info about your server:Admin's nick/real name:contact address
  133.  There is no fixed standard, so you may put whatever you like in each
  134.  field, but you should put enough information for users to contact someone
  135.  responsible for the server.
  136.  
  137.  Example:
  138. A:Disney's IRC Server:Admin - Walt Disney:walt@RIP.org
  139.  
  140.                         --------------------
  141.  
  142. 3.3) Y Lines: [SUGGESTED]
  143.  
  144.  These lines define connection classes. They allow you to fine-tune
  145.  your incomming and outgoing connections, both server and client types.
  146.  These classes are for use with C, N, I and O lines, more on this in later
  147.  sections. DALnet has a set of Y lines that each server must use for their
  148.  server connections, these are listed below and again at the bottom of this
  149.  document. Client connection classes are your responsibility, you must
  150.  make up your own set of Y lines for client connections based on your own
  151.  situation (netwise location, machine, etc).
  152.  Connection classes define a number of parameters for connections, these
  153.  include:
  154.   o Ping frequency of a silent connection.
  155.   o Connect frequency (for server connections only!).
  156.   o Maximum number of links allowed on the specific connection class.
  157.   o Maximum sendq allowed for the connection before it is dropped.
  158.  Your Y line numbers are not arbitraty. For server connection classes, the
  159.  higher the class number, the higher the priority the connection's are given
  160.  when auto-connecting, (see C/N lines below).
  161.  - Ping frequency: When a connection is silent for this period of time
  162.  the server will send a PING to the connection, if the client/server
  163.  on the connection does not reply after a set period of time, the
  164.  connection will be dropped. A value in this field will override the
  165.  ping frequency defined at compile time in your config.h. For server
  166.  connection classes, you should have the same ping frequency on both ends
  167.  of the link, so you should stick with the standard DALnet classes.
  168.  - Connect frequency: Since clients connect to servers and NOT the other
  169.  way around, only server connection classes need to have a connect
  170.  frequency. Client classes should have this field set to 0. When a server
  171.  listed in the server's ircd.conf (see C/N lines) is missing and belongs
  172.  on a conenction class that is holding less connections that defined by
  173.  the max links field, the server will keep on trying to connect to
  174.  the missing server. The ammount time between connection attempts is what
  175.  you define in this field.
  176.   example:
  177.    server1 and server2 are listed in server0's ircd.conf but the only
  178.    visible server to server0 is server1, both server1 and server2 are
  179.    in server0's ircd.conf on the same connection class that allows for `2'
  180.    links, server0 will go looking for server2 and try to connect to
  181.    it each `connect frequency' seconds until the server becomes visible
  182.    again, either by direct connection to server0, or by connection to server1
  183.  - Maximum number of links: Each Y line should have a restriction on the number
  184.  of connections allowed on the class. For client connections, when the limit
  185.  is reached on a particular class, connecting clients trying to connect
  186.  through this class are rejected. A server connecting on a `full' connection
  187.  class will be allowed as this number on server connection classes is used for
  188.  auto-connect purposes. As shown in the above example, when a missing server
  189.  is listed for a particular connection class, and the class is not `full',
  190.  your server will try and connect to this server untill it becomes visible
  191.  again. Servers being connected manually on a `full' connection class via the
  192.  /connect command will be allowed as long as you compiled with MAXIMUM_LINKS
  193.  high enough to accomidate all of your server connections. (you must compile
  194.  as a HUB if you wish to hold more than one server connection, also see H
  195.  lines later in this document).
  196.  - Maximum sendq: SendQ defines the `que' of data waiting to be sent to the
  197.  client/server on the other end of the connection. SendQ's will build up if
  198.  the client requests more data than the link can handle, say if they issue the
  199.  /list command on a network with a lot of channels and they are only on a
  200.  14.4K link, their sendq on the server will build up as all the data cannot
  201.  be sent at once, the sendq size will decrease as the data is sent, and
  202.  increase as more data is requested. Clients will normally sit with a sendq of
  203.  0, it is `abnormal' for a sendq to be high for a client for a long period
  204.  of time. When 2 servers connect, they must send their own data to
  205.  eachother, this data includes: all the users on the server and already
  206.  connected servers, channels, user modes, channel modes, topics (DALnet only)
  207.  etc. When there are many clients on a particular side of the connection, a
  208.  sendq will build up, especially if the link is slow, or already congested
  209.  (example: the link from Australia to the US). When the sendq built up reaches
  210.  the max sendq defined in the connection class for the particular
  211.  client/server, the connection will be dropped. If max sendq's are
  212.  particularly high, it will allow clients/server to take up excess memory on
  213.  the ircd machine so a limit should be placed, especially on client connection
  214.  classes. (IMPORTANT!) If any value of max sendq defined in a connection
  215.  class exceeds the value defined at compile time in your config.h, the sendq
  216.  value will default back to the compile time sendq. If your sendq field in
  217.  a Y line is empty, the class will use the default defined in your config.h
  218.  SendQ's for all connections on your server can be viewed with the
  219.   /stats l <servername>
  220.  command, this will show information for all your server's current links.
  221.  You should have a set of standard server connection classes, at least one
  222.  client connection class, and an Operator class. (see relevant parts of this
  223.  document for notes on each of these)
  224.  
  225.  Syntax:
  226. Y:Class #:Ping frequency:Connect frequency:Max links:Max sendq
  227.  
  228.  Examples:
  229. Y:1:90:0:20:10000
  230.  In this case, connect-frequency is 0 indicating that this is a client
  231.  class (servers never connect to clients, it is the other way around).
  232.  Clients may only idle for 90 seconds before being pinged by the server.
  233.  The number of clients allowed to use this class is 20.
  234.  Clients may only build up a sendq on the server of 10000 bits.
  235.  
  236.  These are the standard server Y lines used on DALnet:
  237.  
  238. # Connecting a hub to a hub
  239. Y:20:10:300:1:3000000
  240. # Connecting a US hub to a US leaf
  241. Y:30:45:0:0:2000000
  242. # Connecting a US leaf to a US hub
  243. Y:35:45:20:1:2000000
  244. # Connecting a US hub to an EU leaf
  245. Y:40:60:0:0:2200000
  246. # Connecting an EU leaf to a US hub
  247. Y:45:60:20:1:2200000
  248. # Connecting a US hub to an AU leaf
  249. Y:42:240:0:0:2200000
  250. # Connecting an AU leaf to a US hub
  251. Y:43:240:60:1:2200000
  252.  
  253.                         --------------------
  254.  
  255. 3.4) I Lines: [MANDATORY]
  256.  
  257.  These lines are the ones initially responsible for letting clients connect
  258.  to your server. So called `client-authorization' lines, they define who
  259.  may connect, and which connection class they will connect through.
  260.  I lines, like C, N and O lines refer back to Y lines, as they allow
  261.  connections, and each connection to ircd needs to be assigned to a
  262.  connection class. If you dont provide a connection class, the connection
  263.  will be governed by the defaults set at compile time in your config.h.
  264.  When a client connects to the server, it gives its own information,
  265.  this information includes username, nick and can include a password, the
  266.  server then goes through its client-authorization rules (I lines) to see
  267.  if the client fits any of the connection criteria.
  268.  The rules for connection on the I lines are read from right to left, so
  269.  if a connection is made, it is made on the right most rule it matches on
  270.  the line. Also, since the ircd.conf is read upside down, the server will
  271.  put the client on the lowest I line matching the client information. This
  272.  means that if the 1st rule the client can connect on matches a connection
  273.  class (Y line) that is `full' (see above), the client will be rejected,
  274.  even if there is a line further up in the file that the client matches on
  275.  that uses a connection class that has room for more clients. This means
  276.  that I lines may be used in much the same fashion as K lines (see later)
  277.  to block certain clients. It also means that you may place certain clients
  278.  on many different connection classes. (examples later)
  279.  
  280.  Syntax:
  281. I:IP-address-mask:optional password:host/domain-mask::connection class (opt)
  282.  Wildcards (`*') may be used in the mask fields (1 and 3) to allow for
  283.  very broad connection rules. Ident (for more information on this, see
  284.  rfc1413) can also be used by placing an `@' in the mask fields in the
  285.  appropriate positions. If you don't want to use ident, only give the
  286.  host/IP part of the connecting addresses, if you add a @ (usually used
  287.  as *@), ircd will try and use ident to check the real username of the
  288.  client, any connecting clients on host's that are running ident that
  289.  give usernames that dont match those found by ircd will be rejected by
  290.  the server. If the host is not running ident, a `~' will be placed in
  291.  front of the username of the connecting client to show that the its
  292.  host isnt running ident.
  293.  
  294.  Examples:
  295.  
  296. I:*@*:foobar:*@*::1
  297.  This line will allow anyone from any host that uses the password
  298.  "foobar" to connect through connection class 1 (Y line 1), the server
  299.  will also try and use ident to verify the username of the client.
  300.  Placed at the top of the I lines in your ircd.conf, this line may serve
  301.  as a fall-through for connecting clients, any client that does not match
  302.  any other I line but gives the password "foobar" will be able to connect
  303.  through this line (If Y line 1 has space).
  304.  
  305. I:205.133.*::*.toledolink.com::1
  306.  This is a standard vanilla I: line which will permit anyone with an IP
  307.  address starting with 205.133 OR with a hostname ending in
  308.  .toledolink.com to connect to the server. remember, ircd uses the
  309.  right-most match, so if I connect as rmiller@glass.toledolink.com
  310.  (which is rmiller@205.133.127.8) I will show up on irc as
  311.  rmiller@glass.toledolink.com since that is the first match it found.
  312.  (Even though the second match is valid). Any clients comming through
  313.  on this line will use connection class 1.
  314.  
  315. I:*@205.133.*::*@*.toledolink.com::1
  316.  Same as above, but the server will use ident. You may even specify
  317.  certain usernames with ident I lines, but they will only match if their
  318.  host is running ident.
  319.  
  320. I:NOMATCH::rmiller@glass.toledolink.com::1
  321.  Putting NOMATCH in the first field will stop the ircd from matching
  322.  automatically against the IP address and it will force the server to
  323.  match against the hostname. (the "NOMATCH" string is not mandatory, you
  324.  can use any arbitrary text in the first field).
  325.  
  326.  Bulk example:
  327. I:NOMATCH::*@*::1
  328. I:NOMATCH::*@*.fr::2
  329. I:NOMATCH::*@*.de::3
  330. I:NOMATCH::*@*.se::4
  331. I:NOMATCH::*@*.au::5
  332. I:129.180.*::*.une.edu.au::6
  333.  In this example, conencting clients will 1st be matched against the mask
  334.  *.une.edu.au, if they match they will be placed on connection class 6
  335.  (note: if 6 is full, they will be rejected, they wont be passed on to the
  336.  next I line), then tried against the IP 129.180.*, if they match, they will
  337.  be placed on class 6. If the client dosen't match either of these masks, they
  338.  will be tried against the mask *.au, so if they are from Australia, but are
  339.  not from *.une.edu.au they will be placed on class 5. This goes on through
  340.  the other lines, being placed on the various connection classes if they match
  341.  any of the indicated host masks, if the client is not from the IP 129.180.*,
  342.  Australia, Sweden, Germany or France, they will be connected through the
  343.  final (top) I line as it serves as a fall-through, so these clients will be
  344.  put on class 1.
  345.  
  346.                         --------------------
  347.  
  348. 3.5) O Lines: [OPTIONAL]
  349.  
  350.  These lines provide rules as to who may gain Operator status on your server.
  351.  O lines are much like I lines in their operation and syntax.
  352.  Servers need not have any Operators as ircd, given well defined connection's
  353.  can perform all of its functions automatically. Server admins have the
  354.  ability to `kill -HUP' the server's PID to rehash the config file, removing
  355.  the need to use the /rehash command. However, a well running network such as
  356.  DALnet needs operators to oversee the users of the server, and make sure
  357.  users actually enjoy their time on IRC without being continually harrased
  358.  etc by troublematers.
  359.  O lines come in two forms, normal `O' lines, and Local Operator `o' lines.
  360.  Normal O lines give users power over the whole network, to use commands
  361.  such as /kill, local Operators only have power on their local server, that
  362.  is, the server where they can use the /oper command to make themselves +o.
  363.  Abilities of Operators and Local Operators can be defined in your config.h.
  364.  When a user issues the /oper command to the server, the server will search
  365.  through all listed O lines for a match of the user's mask, much the same way
  366.  as I lines. As with I lines, you may specify the use of ident by placing an
  367.  `@' in the appropriate positions.
  368.  
  369.  Syntax:
  370.  
  371. O:hostname:password:nickname::class
  372.  See I lines for rules about the hostname and using ident.
  373.  If you use ident, a client matching the hostname must have ident running on
  374.  their host to be able to +o themselves.
  375.  If you compiled defining oper passwords to be crypted, you must 1st crypt
  376.  the plaintext using mkpasswd, a program supplied with the ircd distribution.
  377.  See src/crypt/README for more information on this.
  378.  The nickname is the nickname they must pass with the /oper command
  379.   ie:
  380.    /oper <nickname> <password>
  381.  The class is the connection class to be used when the user /oper's using
  382.  the O line, they connect using the standard I -- Y lines, but when they
  383.  /oper succusfully they are passed across to the new Y line.
  384.  
  385.  Examples:
  386.  
  387. O:RIP.org:waltspass:Walt::10
  388.  This line will allow anyone on the host RIP.org (running ident or not) to
  389.  issue the command `/oper Walt waltspass', at which point they will be moved
  390.  over to class 10 and be made usermode +o.
  391.  
  392. o:*@*:GiJ.E\hGyjhaW:Anyone::10
  393.  This line allows anyone who is running ident to issue the command:
  394.  `/oper Anyone <password>'
  395.  This line comes from an ircd that uses encrypted passwords, so the user must
  396.  have the plaintext password.
  397.  When this line is used with success, the user will be a Local Operator since
  398.  the line only has a small `o'.
  399.  
  400.                         --------------------
  401.  
  402. 3.6) U Lines: [OPTIONAL]
  403.  
  404.  These lines define which server(s) on the network your server is connected
  405.  to will be able to `hack' channel modes.
  406.  On DALnet, services.dal.net is given this power, this allows the server
  407.  to change modes on channels without being a channel operator, the
  408.  commonly used form is ChanServ changing channel modes while not in the
  409.  channels.
  410.  If you are connected to a network such as DALnet that requires you to have
  411.  certain U lines and you don't have them, your server will cause problems
  412.  to the other servers when the server(s) that require U lines attempt to
  413.  change channel modes.
  414.  U lined servers also have the capability to add Akill's to your server,
  415.  Akill's are much the same as the /kline command except that they show up
  416.  as A: lines on /stats k.
  417.  
  418.  Syntax:
  419. U:servername:*:*
  420.  The last 2 fields are currently unused so you only need to give the U
  421.  lined server's name.
  422.  
  423.  Example:
  424. U:services.dal.net::
  425. U:services2.dal.net::
  426.  Both these lines are required on all DALnet server's, they allow servers
  427.  with the name's `services.dal.net' and `services2.dal.net' to hack channel
  428.  modes.
  429.  
  430.                         --------------------
  431.  
  432. 3.7) C and N Lines [NETWORKED]
  433.  
  434.  These lines are always used in pairs, one will not work without the other.
  435.  C lines define who your server may connect to, while N lines define what
  436.  servers may connect to you.
  437.  When two servers connect, they both send eachother the `SERVER' command,
  438.  this command contains the server name and server info (set by M lines)
  439.  along with this command is sent a password with the PASS command, C and N
  440.  lines provide a set of rules governing the connection between servers
  441.  given the details of the server and pass command's.
  442.  When one a server initiates the connection, the other server will check
  443.  the details of the incomming server against its N lines, if a match is
  444.  found, the server will return the server and pass command's to the
  445.  initiating server, which will also check its N lines for a match.
  446.  For a server to initiate a connection, it must have a C line. C lines
  447.  tell the server where to go to make the connection and what to send for
  448.  the pass command.
  449.  What this all means is that for two servers to make a complete connection,
  450.  they must have both C and N lines to refer to for the other server.
  451.  
  452.  Syntax:
  453. C:remote server's hostname/IP:password:remote server's name:port:class
  454. N:remote server's hostname/IP:password:remote server's name:host mask:class
  455.  The remote server's hostname/IP should be the location on the internet that
  456.  the server can be found. IP addresses are prefered as they are more secure,
  457.  and can be a little quicker for the server. As with I and O lines, ident
  458.  can be used with this 1st field to specify the username the ircd on the
  459.  remote server is running from (if the remote server is running ident), to
  460.  use ident with C/N lines, place the username with an @ before the hostname.
  461.  The password should be crypted if you compile ircd specifying that link
  462.  passwords should be crypted. Your link passwords should be very secure, as
  463.  they provide more power, if hacked, than Operator passwords do. However
  464.  crypted link passwords can be very akward to keep track of.
  465.  Your C line password is the password used in the pass command, while your
  466.  N line password will be used to check against the pass command used by
  467.  incomming servers. So, your C line password should match the listed
  468.  server's N line password, and your N line password should match their C
  469.  line password.
  470.  If you compile your ircd specifying crypted link passwords, you only need
  471.  to crypt your N line passwords, use the same method as with O line
  472.  passwords. If you crypt your C line passwords, your link will not work!
  473.  Crypted passwords are a one sided affair, because one server crypts its
  474.  N line passwords does not mean the connecting servers must crypt their
  475.  C line passwords for that server.
  476.  For the 3rd field, the remote servers `name' should be used, this name is
  477.  the one given in that servers M line (see above). This name will be sent
  478.  with the SERVER command, so it must match the one given. The C and N line
  479.  pair should have the same name for this field.
  480.  The 4th field of C lines may contain the remote servers connection port.
  481.  Even though DALnet runs all its servers with a standard port 7000 open,
  482.  server -- server connections should be taken place through port 7325. It is
  483.  not mandatory that you place a port number in this field. If you don't give
  484.  a port number, the server will not try and autoconnect to the listed
  485.  server. If you do give a port number, the server will only try and
  486.  autoconnect to the listed server if there is enough room on the connection
  487.  class listed at the end of the C line (connection classes are covered in
  488.  more detail above, under Y lines), and the listed server is not visible
  489.  (ie: it is not connected to the network). If you don't give a port number,
  490.  any /connect commands for this C line will use the default port specified
  491.  in your config.h unless a port is given with the command. If you do put a
  492.  port number, any /connect command's will use this port unless another port
  493.  number is given with the command.
  494.  The 4th field of N lines is called the `host mask', this defined how many
  495.  parts of your hostname the incomming server will mask to. So, if your
  496.  server's name is disney.us.dal.net, and you want the connecting server to
  497.  see you as *.us.dal.net you will give a host mask of 1 in your N line. This
  498.  field should normally be left blank.
  499.  The 5th (last) field of both C and N lines gives the connection class to
  500.  place the connection on. If your C line has a 42 in this field, and your
  501.  server initiates a connection through this line, the connection will be
  502.  placed on class 42, however, if You have a 42 in your C line and a 43 in
  503.  your N line and an incomming server initiates a connection via this N
  504.  line, the server connection will be placed on class 43.
  505.  
  506.  Examples: 
  507. C:143.53.233.32:mypass:somewhere.fr.dal.net:7325:35
  508. N:143.53.233.32:yourpass:somewhere.fr.dal.net::35
  509.  This set will allow a server named somewhere.fr.dal.net to connect to your
  510.  server if it has the IP address of 143.53.233.32 and gives a password of
  511.  `yourpass'. This connection will be governed by connection class 35.
  512.  If your server recieves the command /connect somewhere.*, it will try and
  513.  connect to the IP 143.53.233.32 through port 7325 and give the password
  514.  `mypass'.
  515.  
  516. C:143.53.233.32:mypass:somewhere.fr.dal.net:7325:35
  517. N:143.53.233.32:yourpass:somewhere.fr.dal.net::35
  518. C:ircd@176.43.652.31:apass:elsewhere.jp.dal.net:7235:35
  519. N:ircd@176.43.652.31:THEpass:elsewhere.jp.dal.net::33
  520.  Both these set's will work as explained above, but if your Y line defining
  521.  class 35 has `max links' set to 1, and one of these servers is connected to
  522.  your server, your server will not try and autoconnect to the other since
  523.  the Y line is `full', but it will accept any incomming connections from the
  524.  other server and any /connect commands given for this server. If your Y
  525.  line allows for more connections but your C lines do not have port numbers,
  526.  your server will not try and autoconnect.
  527.  Since the second set in this example has a username, ident will be used to
  528.  authenticate any connections made to this server. If the listed server does
  529.  not run ident, or the incomming connection comes from another username, the
  530.  connection will be rejected.
  531.  If a connection is made via the second set by your server, the connection
  532.  will be ruled by connection class 35, if the other server initiates the
  533.  connection, the connection will use class 33.
  534.  Autoconnect C/N line pairs can be given prefrence over other pairs by placing
  535.  them lower in your ircd.conf, the lower the line, the higher the priority
  536.  when autoconnecting.
  537.  Connection classes and C/N line set's allow you to refine your autoconnects
  538.  to a very high degree, with practice you can have your server running so
  539.  it does not need any help.
  540.  
  541.                         --------------------
  542.  
  543. 3.8) K Lines [OPTIONAL]
  544.  
  545.  These lines restric access to certain users to your server based on
  546.  user@host matches and time of the day.
  547.  K lines can come in 3 forms, only one of which you can specify in your
  548.  ircd.conf, this type will show up as K on /stats k, the other other types
  549.  are `AutoKill' which will show up as A on /stats k, and `kline' which will
  550.  show up as k on /stats k. AutoKill's are set by U lined servers (see
  551.  above), they act in the same way as K lines except that they are set
  552.  remotly and are usually set on all servers, they dissapear when you
  553.  /rehash or restart your server. klines are set via the /kline command,
  554.  they operate more like AutoKill's than K lines because they also dissapear
  555.  when you /rehash, or restart the server. The /kline command can be used on
  556.  nicknames that appear on IRC, or you can use a user@host mask. If the
  557.  /kline is done on an existing nickname, a kline will be set with that users
  558.  mask and they will be killed off the server.
  559.  
  560.  Syntax:
  561. K:hostmask:time/comment:username
  562.  The hostmask is the host that the user will have on IRC, this may be an
  563.  IP address or a standard host name. The time/comment field may either
  564.  contain nothing, a set of times, or a comment. This field should not
  565.  contain spaces, if you place a comment in the field, you should try and
  566.  be creative in your avoidance of spaces. The stntax of time specification
  567.  is:
  568.   from-to[,from-to[,from-to]]....
  569.  Again, you should not use spaces in this field, but you may specify as
  570.  many time periods as you want/need. 24 hour time should be used, AM and PM
  571.  will not work.
  572.  The username will be the username that shows up on IRC.
  573.  Wildcards (`*', `?') may be used with K lines in both the hostmask and
  574.  username fields.
  575.  
  576.  Examples:
  577. K:RIP.org::walt
  578.  This will reject any user who appears as `walt@RIP.org'.
  579.  
  580. K:*.edu:0800-1200,1300-1700:*
  581.  This will reject any user from any host with a top level `edu', In other
  582.  words, anyone appearing as *@*.edu are banned from the server.
  583.  This ban is only present during the hours of 8AM to 12AM, and again from
  584.  1PM to 5PM, at times other than this, the K line will not be active.
  585.  
  586. K:*::*rad
  587.  This K line will reject anyone with the username `rad', or anything ending
  588.  in `rad'. This ban will dissalow anyone using `rad' running ident or not.
  589.  You must always take into account the ident character (`~') that is placed
  590.  infront of usernames when their host is not running ident. If you place a
  591.  K line on a username `rad' the user will be banned only if they are running
  592.  ident, but if this user can turn off ident they can appear as ~rad, this
  593.  will allow them to bypass any ban of username `rad'. So, wildcards should
  594.  be used with usernames to take into account the ability to turn ident on
  595.  and off. (The ability to change usernames can only be tackled with a `*'
  596.  in the username field)
  597.  
  598.                         --------------------
  599.  
  600. 3.9) Q Lines (server form) [DISCOURAGED]
  601.  
  602.  Server form Q lines on DALnet servers are used to dissalow operators on
  603.  certain servers to use commands such as remote /kill's, and remote
  604.  /connect's, this will effectivly restrict the operators on the server to
  605.  local operator priveleges. These lines are usually only used for `test'
  606.  server situations. If a server isn't officially part of DALnet, they may
  607.  be temporarily linked and Q lined, this means the server can be tested
  608.  while not posing a threat to the rest of DALnet. Q lines need only be
  609.  placed on the hub connecting the `test' server.
  610.  
  611.  Syntax:
  612. Q:*:*:servername
  613.  The 1st 2 fields are currently unused. A Q line placed on a hub connected
  614.  to the named server will dissalow operators on the server to affect other
  615.  DALnet users/servers.
  616.  
  617.  Example:
  618. Q:::test-server.my.dal.net
  619.  Q line a server with the name `test-server.my.dal.net'.
  620.  
  621.                         --------------------
  622.  
  623. 3.10) Q lines (nickname form) [OPTIONAL]
  624.  
  625.  Nickname form Q lines have the ability to deny certain nicknames to users.
  626.  If a nickname is Q lined, the only people allowed to use those nicknames
  627.  are Operators. Q lines, like most other things in your ircd.conf, are local
  628.  only, for a nickname to be Q lined on a whole network all servers must have
  629.  a Q line for that nick. Q lines may also contain comments, these comments
  630.  are given to the user when they attempt to use the nickname and are asked
  631.  to choose another.
  632.  
  633.  Syntax:
  634. Q:*:reason why nick is quarantined:nickname
  635.  The 1st field is currently unused. The 2nd field is the comment sent to any
  636.  user attempting to use the nickname. Unlike K lines, you may use spaces.
  637.  The last field is the nickname to be quarantined, this nickname may contain
  638.  wildcards.
  639.  
  640.  Examples:
  641. Q::No nicknames on MY server!:*
  642.  This Q line will dissalow any nicknames on the server giving the reason:
  643.   No nicknames on MY server!
  644.  Only Operators will be allowed to use any nicknames, but since you must be
  645.  a user before you can be +o, you will effectivly ban everyone from your
  646.  server.
  647.  
  648. Q::Do not use the Lords name in vain!:God
  649.  Anyone attempting to use the nickname `God' on your server will be told
  650.  that they must find a new nickname and will be given the reason:
  651.   Do not use the Lords name in vain!
  652.  
  653.  DALnet has a set of standard Q lines that should be in place on all
  654.  server's. They are as follows:
  655.  
  656. Q::Reserved for services:*Chan*S*rv*
  657. Q::Reserved for services:*Nick*S*rv*
  658. Q::Reserved for services:*Memo*S*rv
  659. Q::Reserved for services:*Oper*S*rv*
  660. Q::Reserved for services:*Help*S*rv*
  661. Q::Reserved for operators:DALnet
  662. Q::Reserved for operators:IRC*op*
  663. Q::Causes problems with mIRC:Status
  664.  
  665.                         --------------------
  666.  
  667. 3.11) L Lines [OPTIONAL/NETWORKED]
  668.  
  669.  These lines specify which servers are to behave as leaves, that is,
  670.  servers that may not have any other servers connected to them.
  671.  They will only be usefull if your server is a non-leaf (hub) server.
  672.  Not only can you limit servers to leaves, but you can also specify
  673.  what tree depth may appear after certain servers. If a server connects
  674.  but tells your server that it has a larger tree depth behind it than is
  675.  allowed via your L line for the server, the server will be rejected.
  676.  A limit of `0' will mean the server may only be a leaf. A limit of `1'
  677.  will mean that only leaf servers may be connected to the L lined server
  678.  when it is connected to your server.
  679.  You may also use L lines to restrict what servers may connect to certain
  680.  servers while they are connected to your server.
  681.  
  682.  Syntax:
  683. L:hostmask of disallowed servers:*:server name:depth
  684.  The 1st field defines the limitations on servers allowed to connect to
  685.  the L lined server by hostmask. If any server connects to the L lined
  686.  server while it is connected to your server, and it's name matches the
  687.  hostmask given here, it will be rejected. Wildcards are allowed. You do not
  688.  need to put a value in this field.
  689.  The 2nd field is currently unused and should be left blank.
  690.  The 3rd field is the name of the server to be L lined, when this server
  691.  connects to your server, the restrictions defined by the L line are placed
  692.  on this server. Wildcards are allowed.
  693.  The 4th field defines the depth of servers allowed to be connected behind
  694.  the L lined server. 
  695.  
  696.  Examples:
  697. L:::leaf.de.dal.net
  698.  This line will allow a server named `leaf.de.dal.net' to connect only as
  699.  a leaf. So this server may not connect any other servers behind it.
  700.  
  701. L:::semi-hub.sg.dal.net:1
  702.  This line will force the server named `semi-hub.sg.dal.net' to allow only
  703.  leaf servers to connect behind it. ie: to have a tree depth of 1.
  704.  
  705. L:*.us.dal.net::*.au.dal.net
  706. L:*.eu.dal.net::*.au.dal.net
  707.  These lines will make sure that any server with a name matching
  708.  *.au.dal.net will not introduce any servers matching *.us.dal.net or
  709.  *.eu.dal.net. This can be usefull for stopping certain hubs from letting
  710.  its autoconnects route the network badly.
  711.  
  712.                         --------------------
  713.  
  714. 3.12) H Lines [OPTIONAL/NETWORKED]
  715.  
  716.  These lines are similar to L lines, except that they define what servers
  717.  may act as a hub while connected to you. That is, which servers may
  718.  introduce other servers behind them.
  719.  You may limit what servers may be connected behind the H lined server.
  720.  
  721.  Syntax:
  722. H:servers which are allowed behind the hub:*:hub servername
  723.  The 1st field defines what servernames the H lined server is allowed to
  724.  introduce. Wildcards are allowed.
  725.  The 2nd field is currently unused and should be left blank.
  726.  The 3rd field should be the exact name of the server allowed to be a hub
  727.  while connected to you. You may not use wildcards with this field unless
  728.  the server's name includes a `*' (See N lines for host masking).
  729.  
  730.  Examples:
  731. H:*::dal-hub.us.dal.net
  732.  This line will allow the server with the name `dal-hub.us.dal.net' to act
  733.  as a hub server while you are connected to it, there are no restrictions
  734.  on the names of the servers it may introduce.
  735.  
  736. H:*.us.dal.net::usa-hub.us.dal.net
  737.  This line will allow the server named `usa-hub.us.dal.net' to act as a hub
  738.  while your server is connected to it, but it is limited to introducing
  739.  servers with names matching `*.us.dal.net', so any servers trying to
  740.  connect to `usa-hub.us.dal.net' with a name such as `bad-link.nz.dal.net'
  741.  will be rejected by your server.
  742.  
  743.                         --------------------
  744.  
  745. 3.13) P lines [OPTIONAL]
  746.  
  747.  These lines will open up ports other than the port you specified in your
  748.  config.h when you compiled your ircd.
  749.  Using internet domain ports below 1024 mean that you must run ircd from
  750.  inetd. ircd can listen to ports in the UNIX domain as well as the internet
  751.  domain. With UNIX domain ports you must give a unix socket file, you must
  752.  also compile ircd with UNIXPORT defined in your config.h.
  753.  You may limit usage of ports in the internet domain to certain hostmasks.
  754.  You do not need to provide a P line for the default port you defined in
  755.  your config.h, only extra ports you wish to open. You should compile ircd
  756.  to run from port 7000, but it is recomended that you add a P line for port
  757.  6667 as most IRC clients default to this port when connecting. If you are
  758.  connected to DALnet, you should have a P line for port 7325, this is the
  759.  standard server connection port for all DALnet servers.
  760.  
  761.  Syntax:
  762. P:hostmask or UNIX socket file:*:*:port number
  763.  The 1st field should either specify a path to a UNIX socket file, or give
  764.  a hostmask to match against connecting clients on this port. Clients not
  765.  matching this mask will be rejected.
  766.  The 2nd and 3rd field's are currently unused, and should be left blank.
  767.  The last field is the port number to open up and listen to for connections.
  768.  
  769.  Examples:
  770. P:*:::7325
  771.  This will open up the DALnet server connection port and wait for
  772.  connections. This line is mandatory if you run a server connected to DALnet
  773.  
  774. P:*.net:::6665
  775.  This line will open up port 6665 and wait for connections, connections from
  776.  hosts not matching `*.net' will be rejected.
  777.  
  778. P:/tmp/.ircd:*:*:6666
  779.  This line will open up the port 6666 in the UNIX domain, with a socket file
  780.  of: /tmp/.ircd.
  781.  
  782.                         --------------------
  783.  
  784. 3.14) Summary:
  785.  
  786.  Well, thats it for the lines you may use in your ircd.conf. Remember that
  787. ircd.conf is an art, just like any other type of programming. Some parts
  788. are particularly easy, but other's, like Y lines, can take a while to get
  789. used to. Given a little time experementing with lines on a network of
  790. servers, you will become well versed in ircd.conf programming.
  791.  
  792. Good luck!
  793.  
  794.                         --------------------
  795.  
  796.  3.15) DALnet ircd.conf lines:
  797.  
  798.    -- cut here -- begin --
  799. #
  800. # Standard DALnet Connection Classes
  801. #
  802. # US hub to US hub
  803. Y:50:60:60:1:3000000
  804. # US hub to US leaf
  805. Y:30:45:0:0:2000000
  806. # US hub to EU leaf
  807. Y:32:180:0:0:3200000
  808. # US hub to AU leaf
  809. Y:34:240:0:0:3200000
  810. #
  811. # US leaf to US hub
  812. Y:40:45:30:1:2000000
  813. # EU leaf to US hub
  814. Y:42:180:30:1:3200000
  815. # AU leaf to US hub
  816. Y:44:240:30:1:3200000
  817. #
  818. # Standard DALnet Q lines
  819. #
  820. Q::Bug in mIRC:Status
  821. Q::Reserved for services:*ChanS*rv*
  822. Q::Reserved for services:*NickS*rv*
  823. Q::Reserved for services:*MemoS*rv*
  824. Q::Reserved for services:*OperS*rv*
  825. Q::Reserved for services:*HelpS*rv*
  826. Q::Reserved for *Real* IRC Operators:*IRC*op*
  827. Q::Reserved for IRC Operators:DALnet
  828. #
  829. # DALnet U lines (IMPORTANT!)
  830. #
  831. U:services.dal.net::
  832. U:services2.dal.net::
  833. #
  834. # Server <--> Server P line
  835. #
  836. P:*:::7325
  837.  
  838.  -- cut here -- end --
  839.                         --------------------
  840.  
  841. Any further information on DALnet can be found at http://www.dal.net
  842. Original DALnet server source code should be obtained from ftp.dal.net or
  843. any one of its official mirror sites.
  844.  
  845.                         --------------------
  846.  
  847. [ Some text stolen from original example.conf modified for DALnet ]
  848.  
  849.  -- Roddy Vagg / <roddy@dal.net>
  850.  
  851. [ $Id: conf.doc,v 1.1.1.1 1999/09/01 23:20:35 stskeeps Exp $ ]